package eu.floranet.repositorio.sql;

import java.io.Serializable;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "obj_processo")
public class EntidadeProcesso implements Serializable {
	@Id
	private int idprocesso;

	@Column(name = "objprocesso_cota")
	private String processoCota;

	@Column(name = "objprocesso_entidades")
	@Lob
	private String processoEntidades;

	@Column(name = "objprocesso_descritivo")
	@Lob
	private String processoDescritivo;

	@Column(name = "objprocesso_data_despacho")
	private Date processoDataDespacho;

	@Column(name = "objprocesso_data_processo")
	private Date processoDataProcesso;

	@Column(name = "objprocesso_notas")
	@Lob
	private String processoNotas;

	@Column(name = "objprocesso_obs")
	@Lob
	private String processoObs;

	@Column(name = "objprocesso_user")
	private int processoUser;

	@ManyToOne
	@JoinColumn(name = "objprocesso_type")
	private EntidadeTipoProcesso processoTipo;

	@ManyToOne
	@JoinColumn(name = "objprocesso_arquivo")
	private EntidadeArquivo processoArquivo;

	@OneToMany(mappedBy = "pfProcesso")
	private List<RelationProcessoFreguesia> listaProcessoFreguesia = new ArrayList<RelationProcessoFreguesia>();

	@OneToMany(mappedBy = "paProcesso")
	private List<RelationProcessoArciprestado> listaProcessoArciprestado = new ArrayList<RelationProcessoArciprestado>();

	private static final long serialVersionUID = 1L;

	public EntidadeProcesso() {
		super();
	}

	public EntidadeProcesso(String processoCota, String processoEntidades,
			String processoDescritivo, Date processoDataDespacho,
			Date processoDataProcesso, int processoUser,
			EntidadeTipoProcesso processoTipo, EntidadeArquivo processoArquivo) {
		this();
		setProcessoCota(processoCota);
		setProcessoEntidades(processoEntidades);
		setProcessoDescritivo(processoDescritivo);
		setProcessoDataDespacho(processoDataDespacho);
		setProcessoDataProcesso(processoDataProcesso);
		setProcessoUser(processoUser);
		setProcessoTipo(processoTipo);
		setProcessoArquivo(processoArquivo);
	}

	public int getIdprocesso() {
		return this.idprocesso;
	}

	public void setIdprocesso(int idprocesso) {
		this.idprocesso = idprocesso;
	}

	public String getProcessoCota() {
		return this.processoCota;
	}

	public void setProcessoCota(String processoCota) {
		this.processoCota = processoCota;
	}

	public String getProcessoEntidades() {
		return this.processoEntidades;
	}

	public void setProcessoEntidades(String processoEntidades) {
		this.processoEntidades = processoEntidades;
	}

	public String getProcessoDescritivo() {
		return this.processoDescritivo;
	}

	public void setProcessoDescritivo(String processoDescritivo) {
		this.processoDescritivo = processoDescritivo;
	}

	public Date getProcessoDataDespacho() {
		return this.processoDataDespacho;
	}

	public void setProcessoDataDespacho(Date processoDataDespacho) {
		this.processoDataDespacho = processoDataDespacho;
	}

	public Date getProcessoDataProcesso() {
		return this.processoDataProcesso;
	}

	public void setProcessoDataProcesso(Date processoDataProcesso) {
		this.processoDataProcesso = processoDataProcesso;
	}

	public String getProcessoNotas() {
		return this.processoNotas;
	}

	public void setProcessoNotas(String processoNotas) {
		this.processoNotas = processoNotas;
	}

	public String getProcessoObs() {
		return this.processoObs;
	}

	public void setProcessoObs(String processoObs) {
		this.processoObs = processoObs;
	}

	public int getProcessoUser() {
		return this.processoUser;
	}

	public void setProcessoUser(int processoUser) {
		this.processoUser = processoUser;
	}

	public EntidadeTipoProcesso getProcessoTipo() {
		return this.processoTipo;
	}

	public void setProcessoTipo(EntidadeTipoProcesso processoTipo) {
		this.processoTipo = processoTipo;
	}

	public EntidadeArquivo getProcessoArquivo() {
		return this.processoArquivo;
	}

	public void setProcessoArquivo(EntidadeArquivo processoArquivo) {
		this.processoArquivo = processoArquivo;
	}

	public List<RelationProcessoFreguesia> getListaProcessoFreguesia() {
		return this.listaProcessoFreguesia;
	}

	public void setListaProcessoFreguesia(
			List<RelationProcessoFreguesia> listaProcessoFreguesia) {
		this.listaProcessoFreguesia = listaProcessoFreguesia;
	}

	public RelationProcessoFreguesia addRelationProcessoFreguesia(
			RelationProcessoFreguesia relationProcessoFreguesia) {
		getListaProcessoFreguesia().add(relationProcessoFreguesia);
		relationProcessoFreguesia.setPfProcesso(this);
		return relationProcessoFreguesia;
	}

	public RelationProcessoFreguesia removeRelationProcessoFreguesia(
			RelationProcessoFreguesia relationProcessoFreguesia) {
		getListaProcessoFreguesia().remove(relationProcessoFreguesia);
		relationProcessoFreguesia.setPfProcesso(null);
		return relationProcessoFreguesia;
	}

	public List<RelationProcessoArciprestado> getListaProcessoArciprestado() {
		return this.listaProcessoArciprestado;
	}

	public void setListaProcessoArciprestado(
			List<RelationProcessoArciprestado> listaProcessoArciprestado) {
		this.listaProcessoArciprestado = listaProcessoArciprestado;
	}

	public RelationProcessoArciprestado addRelationProcessoArciprestado(
			RelationProcessoArciprestado relationProcessoArciprestado) {
		getListaProcessoArciprestado().add(relationProcessoArciprestado);
		relationProcessoArciprestado.setPaProcesso(this);
		return relationProcessoArciprestado;
	}

	public RelationProcessoArciprestado removeRelationProcessoArciprestado(
			RelationProcessoArciprestado relationProcessoArciprestado) {
		getListaProcessoArciprestado().remove(relationProcessoArciprestado);
		relationProcessoArciprestado.setPaProcesso(null);
		return relationProcessoArciprestado;
	}
}
